#ifndef STRUCT_EDGES_BASE_HPP
#define STRUCT_EDGES_BASE_HPP

#include "edgesBase.hpp"

namespace hms
{

template<typename EdgesType>
class StructEdgesBase : public EdgesBase<EdgesType>
{
public:
	using MeshType = typename EdgesTraits<EdgesType>::MeshType;
	// static_assert( std::is_base_of_v<StructMeshBase<MeshType>, MeshType> );

	static constexpr int maxOrder {2};

private:
	std::array<Array2Xi, maxOrder> m_cells;

public:
	StructEdgesBase() = default;
	StructEdgesBase( const StructMeshBase<MeshType>& );

protected:
	auto cellsImp(Index order) const -> const Array2Xi&;

protected:
	void storeIndices();

	friend MeshType;
	friend MeshBase<MeshType>;
};

} // namespace hms


#endif